001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Mar 11, 2003 005 * Time: 7:25:53 PM 006 */ 007 008 package EVolve.visualization.XYViz.ValValViz; 009 010 import EVolve.data.Element; 011 import EVolve.data.DataFilter; 012 import EVolve.data.Entity; 013 import EVolve.util.painters.*; 014 import EVolve.util.painters.shapes.Line; 015 import EVolve.visualization.AutoShapeImage; 016 import EVolve.visualization.Dimension; 017 import EVolve.visualization.ReferenceDimension; 018 import EVolve.visualization.ValueDimension; 019 import EVolve.Scene; 020 import javax.swing.*; 021 import java.awt.*; 022 import java.util.HashMap; 023 024 public class ContinousMetric extends ValueValueVisualization{ 025 private JTextField textInterval; 026 private int triggerDimension; 027 private int selectedTrigger = 0; 028 029 030 public ContinousMetric() { 031 032 } 033 034 public Dimension[] createDimension() { 035 Dimension[] returnVal = new Dimension[3]; 036 037 xAxis = new ValueDimension(); 038 yAxis = new ValueDimension(); 039 entityIdFilter = new ReferenceDimension(); 040 041 returnVal[0] = xAxis; 042 returnVal[1] = yAxis; 043 returnVal[2] = entityIdFilter; // trigger filter 044 045 triggerDimension = returnVal.length - 1; 046 047 return returnVal; 048 } 049 050 public JMenuItem[] createSelectionMenuItem() { 051 return null; 052 } 053 054 protected JPanel createConfigurationPanel() { 055 JPanel configurationPanel = new JPanel(new FlowLayout()); 056 configurationPanel.add(new JLabel("Interval: ")); 057 058 textInterval = new JTextField(String.valueOf(interval), 10); 059 configurationPanel.add(textInterval); 060 061 return configurationPanel; 062 } 063 064 public void preVisualize() { 065 } 066 067 public void receiveElement(Element element) { 068 if (element.isOptional()) return; 069 070 long mappedTriggerId = entityIdFilter.getField(element); 071 long triggerId = entityIdFilter.getEntityFromInt((int)mappedTriggerId).getId(); 072 073 if ( (int)triggerId != selectedTrigger) return; 074 075 // do paint things here 076 077 } 078 079 public void visualize() { 080 sort(); 081 } 082 083 protected void installPainter() { 084 painter = new AllocDensityMetricPainter(); 085 } 086 087 public void mouseMove(int x, int y) { 088 } 089 090 public void makeSelection() { 091 092 } 093 094 protected void updateComboDimension() { 095 for (int i = 0; i < triggerDimension; i++) { 096 if (comboDimension[i].getSelectedIndex() != -1) { 097 comboDimension[i].setToolTipText(dataFilter[comboSubject.getSelectedIndex()][i][comboDimension[i].getSelectedIndex()].getDescription()); 098 } 099 } 100 101 selectedTrigger = comboDimension[triggerDimension].getSelectedIndex(); 102 103 // according to dimension definition in VizFactory, we get the data filter manually 104 // and then set it to the entityIdFilter(trigger filter) 105 DataFilter dataFilter = Scene.getDataManager().getDataFilter(subjectDefinition,definition.getDimensionDefinition()[triggerDimension].getProperty())[0]; 106 entityIdFilter.setDataFilter(dataFilter); 107 108 // now, with the data filter we can get all trigger name from the entity set which we built during 109 // loading data trace. With these names, we can set the combo box manually 110 comboDimension[triggerDimension].removeAllItems(); 111 HashMap triggerEntities = Scene.getDataManager().getEntity()[dataFilter.getTargetType()]; 112 113 //here I assume triggers have continuous Id starting from 0, otherwize you have to change this 114 for (int i=0; i<triggerEntities.size(); i++) { 115 comboDimension[triggerDimension].addItem(((Entity)triggerEntities.get(new Long(i))).getName()); 116 } 117 comboDimension[triggerDimension].setSelectedIndex(selectedTrigger); 118 } 119 }